Skip to content

feat: invoke registered page tools - #6

Merged
jmagar merged 2 commits into
mainfrom
codex/page-call
Aug 14, 2026
Merged

feat: invoke registered page tools#6
jmagar merged 2 commits into
mainfrom
codex/page-call

Conversation

@jmagar

@jmagar jmagar commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add call-scoped page.call routing pinned to an explicit browser document and catalog revision
  • bridge bounded tool execution and cancellation through the authenticated extension channel
  • record metadata-only invocation audits and expose separate read/call credentials

Verification

  • mix compile --warnings-as-errors
  • mix test (70 passed)
  • mix credo --strict
  • npm test --prefix extension (12 passed)
  • MIX_ENV=prod mix assets.deploy
  • git diff --check

Boundaries

  • Webby remains independent of Labby
  • production asset build completed; dependency compiler warnings are upstream warnings
  • a live Chrome extension/WebMCP page acceptance run is still required on a browser with the WebMCP origin trial/API enabled

jmagar added 2 commits August 13, 2026 21:36
Resolves extension/src/probe.js, where this branch added invokeWebMcp
and cancelWebMcp while main rewrote probeWebMcp for type-checking.

Both sides are kept, with two changes the merge made worth doing:

The catalog normalization is now one shared function. Both copies did
the same work, and invokeWebMcp compares its normalized catalog against
the one the server recorded from probeWebMcp -- had the two ever
drifted apart, every invocation would have failed with stale_catalog.

executeTool() is documented as unspecified. It is not in the WebMCP IDL
or in webmcp-types; the upstream README still carries "TODO: Spec and
describe the modelContext.getTools() and modelContext.executeTool()
APIs", and webmachinelearning/webmcp#51 has been open since 2025-11-03.
getTools() was specced in #223, its sibling was not. The existing
feature-detect-and-report-unavailable behavior is unchanged and is what
section 21 of the design spec requires; it now passes through a single
narrow boundary so everything the spec does define stays type-checked.
Webby's own main-world global is declared in src/globals.d.ts rather
than loosened, keeping webmcp-types the only external contract asserted.
@jmagar
jmagar merged commit 81c198c into main Aug 14, 2026
2 checks passed
@jmagar
jmagar deleted the codex/page-call branch August 14, 2026 13:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant